package cn.demoncat.util.lang.entity.tree;

import cn.demoncat.util.lang.fn.Consumer2;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

/**
 * 数值ID的Tree
 * 
 * @author 延晓磊
 *
 * @since 2019年10月25日
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class LongTreeEntity extends AbstractTreeEntity<LongTreeEntity,Long>{

	// ID(必须)
	private Long id;
	// 名称(必须)
	private String name;
	// 父ID(必须)
	private Long parentId;
	// 节点等级
	private Integer nodeLevel;
	// 子节点数
	private Integer subCount;
	// 排序
	private Long sort;

	/**
	 * 转换列表为 LongTreeEntity
	 *
	 * @param list
	 * @param convertor	通过a设置b的{id,name,parent}等属性
	 * @return
	 */
	public static <E>List<LongTreeEntity> build(Collection<E> list, Consumer2<E,LongTreeEntity> convertor){
		List<LongTreeEntity> entities = new ArrayList<>(list.size());
		LongTreeEntity entity;
		for (E e : list) {
			entity = new LongTreeEntity();
			convertor.accept(e, entity);
			entities.add(entity);
		}
		return entities;
	}

	
}
